﻿using System;
using System.Threading.Tasks;
using System.Windows;

namespace WPFTestSolution.Windows {
    
    /**
     * 本项目:
     * 1._44_ScrollBar_Page.xaml 是模板代码
     * 2._55_DataGrid_Page 怎么在xaml中的DataGrid直接添加并显示数据??
     * 3.ScrollParentWhenAtMax 还需修改
     */
    public partial class TestWindow : Window {
        public TestWindow() {
            InitializeComponent();
            this.Title = "测试页面";


            /**
             * P21: 事件详解_2, 时间: 26:40
             */
            //1.点击事件可复用
            this.Btn0.Click += BtnOnClick;
            
            //2.点击事件, delegate委托匿名方法(过时)
            this.Btn1.Click += delegate(object sender, RoutedEventArgs args) {
                this.textBox.Text = "2.点击事件, delegate委托匿名方法(过时)";
            };
            
            //3.使用 Lambda 表达式实现方式, ()内参数类型 object, RoutedEventArgs 可省略
            this.Btn2.Click += (object sender, RoutedEventArgs args) => {
                this.textBox.Text = "3.delegate, 使用 Lambda 表达式实现方式";
            };

            subThread();
        }

        //点击事件可复用
        private void BtnOnClick(object sender, RoutedEventArgs e) {
            this.textBox.Text = "1.点击事件可复用";
            printLog();
        }

        private void BtnOnClick1(object sender, RoutedEventArgs e) {
            this.textBox.Text = "4.xaml中Click=\"BtnOnClick1\"反射调用方法";
        }

        private void subThread() {
            //子线程 -> 主线程 -> 更新ui
            Task.Run(() => {
                this.Dispatcher.Invoke(() => {
                    Console.WriteLine("子线程 -> 主线程 -> 更新ui");
                });
            });
        }

        private void showMessage() {
            MessageBox.Show("这是一个信息弹框", "信息",
                MessageBoxButton.OK,
                MessageBoxImage.Information
            );
        }

        private void printLog() {
            try {
                var y = 0;
                var x = 1 / y;
            } catch (System.DivideByZeroException exception) {
                Console.WriteLine(exception);
                // throw;
            }
        }
    }
}